﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
using System.Data;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
using System.Collections;
using eepg_contratos.Utilities;

namespace eepg_contratos.Models
{
    #region OtrosModels

    public class CiclosZonasModel
    {
        public String ciclo { get; set; }
        public String zona { get; set; }
    }

    public class LogProcesoBeneficiarioModel 
    {
        public Int32 ciclo { get; set; }
        public String zona { get; set; }
        public String usuario_ing { get; set; }
        public String guid { get; set; }
    
    }

    public class CatalogoTablaModel
    {
        public String nombreTabla { get; set; }
    }

    #endregion

    #region OtrosServices

    public class OtrosServices
    {
        public ArrayList ListarCiclosZonas()
        {
            ConexionModel cm = new ConexionModel();
            OracleConnection con = cm.DesarrolloRenova;
            OracleCommand Comm = new OracleCommand();
            ArrayList vListado = new ArrayList();

            Comm.Connection = con;
            Comm.CommandText = "PKG_RENOVA.PROC_LISTAR_CICLOS_ZONAS";
            Comm.CommandType = CommandType.StoredProcedure;
            Comm.Parameters.Add("p_datos", OracleDbType.RefCursor).Direction = ParameterDirection.Output;
            Comm.Parameters.Add("p_coderror ", OracleDbType.Varchar2, 25).Direction = ParameterDirection.Output;
            Comm.Parameters.Add("p_mensaje", OracleDbType.Varchar2, 100).Direction = ParameterDirection.Output;

            OracleDataReader oReader;
            con.Open();
            oReader = Comm.ExecuteReader();

            ListadoModel cz;

            while (oReader.Read())
            {
                cz = new ListadoModel();
                cz.id = oReader["ciclo"].ToString();
                cz.descripcion = oReader["zona"].ToString();
                cz.mensaje = "" + oReader["mensaje"].ToString();
                cz.numero = "" + oReader["numero"].ToString();
                vListado.Add(cz);
            }

            Comm.Dispose();
            con.Close();
            GC.Collect();

            return vListado;
        }

        public String ProcesarBeneficiariosPorCicloZonaAction(LogProcesoBeneficiarioModel a)
        {
            ConexionModel cm = new ConexionModel();

            String sql = "PKG_RENOVA.PROC_BENEFICIARIOS_RENOVA";

            OracleConnection conn = cm.DesarrolloRenova;
            OracleCommand cmd = new OracleCommand();

            conn.Open();
            OracleTransaction tx = default(OracleTransaction);
            tx = conn.BeginTransaction();
            cmd = conn.CreateCommand();
            cmd.Transaction = tx;
            cmd.CommandText = sql;
            cmd.CommandType = CommandType.StoredProcedure;

            OracleParameterCollection param = cmd.Parameters;
            param.Add("p_zona", a.zona);
            param.Add("p_ciclo", a.ciclo);
            param.Add("p_usuario_ing", a.usuario_ing);
            param.Add("p_guid", a.guid);
            param.Add("p_coderror", OracleDbType.Varchar2, 25).Direction = ParameterDirection.Output;
            param.Add("p_mensaje", OracleDbType.Varchar2, 200).Direction = ParameterDirection.Output;
            String mensaje = "";
            try
            {
                cmd.ExecuteNonQuery();
                mensaje = cmd.Parameters["p_mensaje"].Value.ToString();
                if (mensaje == "null")
                {
                    mensaje = "";
                }
                tx.Commit();
                conn.Close();
                cmd.Dispose();
                GC.Collect();
            }
            catch (Exception ex)
            {
            }
            return mensaje;
        }

    }
    #endregion
}